package com.example.mybatisplusdemo.common.utls;

import com.example.mybatisplusdemo.model.dto.UpdateLevelRequestDTO;

import java.math.BigDecimal;

public class LevelCalculatorUtil {

    public static UpdateLevelRequestDTO getLevelByConsumption(BigDecimal totalConsumption) {
        UpdateLevelRequestDTO dto = new UpdateLevelRequestDTO();

        if (totalConsumption.compareTo(new BigDecimal("50000")) >= 0) {
            dto.setLevelId(5L);
            dto.setDiscountRate(BigDecimal.valueOf(0.85));
            dto.setPointsMultiplier(BigDecimal.valueOf(3.0));
            dto.setCanReturnWithoutReview(true);
        } else if (totalConsumption.compareTo(new BigDecimal("20000")) >= 0) {
            dto.setLevelId(4L);
            dto.setDiscountRate(BigDecimal.valueOf(0.90));
            dto.setPointsMultiplier(BigDecimal.valueOf(2.0));
            dto.setCanReturnWithoutReview(true);
        } else if (totalConsumption.compareTo(new BigDecimal("5000")) >= 0) {
            dto.setLevelId(3L);
            dto.setDiscountRate(BigDecimal.valueOf(0.95));
            dto.setPointsMultiplier(BigDecimal.valueOf(1.5));
            dto.setCanReturnWithoutReview(false);
        } else if (totalConsumption.compareTo(new BigDecimal("2000")) >= 0) {
            dto.setLevelId(2L);
            dto.setDiscountRate(BigDecimal.valueOf(0.98));
            dto.setPointsMultiplier(BigDecimal.valueOf(1.2));
            dto.setCanReturnWithoutReview(false);
        } else {
            dto.setLevelId(1L);
            dto.setDiscountRate(BigDecimal.valueOf(1.0));
            dto.setPointsMultiplier(BigDecimal.valueOf(1.0));
            dto.setCanReturnWithoutReview(false);
        }

        return dto;
    }
}
